﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Emporium_Web
{
    public partial class EstiloImagenUpload : System.Web.UI.UserControl
    {
        public string Ruta
        {
            get
            {
                return txtRuta.Text;
            }           
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            errorMessage.Visible = false;
            warningMessage.Visible = false;
            EstablecerValidaciones();            
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            CargarImagen();
        }

        private void CargarImagen()
        {
            try
            {
                if (fupRutaArchivo.HasFile)
                {
                    if (!VerificaTipoArchivo(System.IO.Path.GetExtension(fupRutaArchivo.FileName).ToUpper()))
                    {
                        warningMessage.Visible = true;
                        lblWarningMessage.Text = Resources.MensajesValidacion.InvalidFormatImage;
                        mpeImagenUpLoad.Show();
                        return;
                    }

                    string sNombre = String.Format("{0:yyyyMMddHHmmss}", DateTime.Now);
                    string sRutaFisica = Server.MapPath("~") + @"Files\Imagenes" + "\\" + sNombre + System.IO.Path.GetExtension(fupRutaArchivo.FileName);
                    string sRutaVirtual = @"~\Files\Imagenes" + "\\" + sNombre + System.IO.Path.GetExtension(fupRutaArchivo.FileName);

                    SubirArchivosServidor(fupRutaArchivo, sRutaFisica);

                    txtRuta.Text = sRutaVirtual;
                    btnEditarImagen.ImageUrl = sRutaVirtual;

                    btnEditarImagen.Visible = true;
                    btnAgregarImagen.Visible = false;

                    if (btnEditarImagen.Visible)
                        mpeImagenUpLoad.TargetControlID = "btnEditarImagen";
                    else
                        mpeImagenUpLoad.TargetControlID = "btnAgregarImagen";

                    mpeImagenUpLoad.Hide();
                }
                else
                {
                    warningMessage.Visible = true;
                    lblWarningMessage.Text = Resources.MensajesValidacion.RequiredImage;
                    mpeImagenUpLoad.Show();
                }
            }
            catch (Exception ex)
            {
                lblErrorMessage.Text = ex.Message;
                errorMessage.Visible = true;
                mpeImagenUpLoad.Show();
            }
        }

        /// <summary>
        /// Llena los mensajes de error de las validaciones del formulario.
        /// </summary>
        private void EstablecerValidaciones()
        {
            reqRuta.Text = Resources.MensajesValidacion.RequiredImage;          
        }

        public static void SubirArchivosServidor(FileUpload fupControl, string sRutaDestino)
        {
            if (fupControl.HasFile)
            {
                fupControl.PostedFile.SaveAs(@sRutaDestino);
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            mpeImagenUpLoad.Hide();
        }

        private static bool VerificaTipoArchivo(string pExtension)
        {
            bool xRes = false;

            switch (pExtension)
            {
                case ".JPG":
                    xRes = true;
                    break;
                case ".JPEG":
                    xRes = true;
                    break;
                case ".GIF":
                    xRes = true;
                    break;
                case ".TIFF":
                    xRes = true;
                    break;
                case ".PNG":
                    xRes = true;
                    break;
                case ".BMP":
                    xRes = true;
                    break;
            }
            return (xRes);
        }

    }
}